iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
Software Development

從 C++ 菜鳥到 Low-Latency 勇者:一場分秒必爭的賽局系列 第 22

[Day 22] HFT Networking Infrastructure: Kernel Bypass I

  • 分享至 

  • xImage
  •  

Kernel bypass 這個名詞時常聽到,卻一直不理解其背後的含義 —— 這是一種繞過 Linux 的 TCP/IP 網路通訊協定疊等作業系統核心,直接讓應用程式與網路卡或儲存設備等硬體進行通訊的技術。其旨在大幅降低延遲並提高 high concurrency 的吞吐量,適用於超融合架構、高效能計算、即時串流等對微秒級延遲極度敏感的領域。今天我們就來簡單介紹它的用途與運作原理,以及其在高頻交易系統中的應用!

1. Kernel Bypass 的核心優勢與實現方式

在傳統的作業系統架構中,當網路封包到達網路卡時會經歷以下流程,進而產生不必要的效能損耗。

  • 硬體中斷:網卡收到封包後會觸發硬體中斷,CPU 必須迫暫停當前的工作來優先處理。
  • Context Switch:資料處理的過程涉及 kernel space 與 user space 之間的多次切換,消耗了額外的 CPU 週期。
  • Memory Copy:資料必須先從網卡透過 DMA 拷貝到 Kernel buffer,接著再從核心空間拷貝到應用程式所在的使用者空間。這些重複的搬移過程成了速度的硬傷。

而 kernel bypass 能透過以下機制解決上述性能瓶頸。

  • Zero-Copy:資料直接在網卡與 user space 記憶體之間透過 DMA 傳輸,省去 kernel 的拷貝過程。
  • Polling:以主動輪詢的模式取代被動的硬體中斷,避免高負載下的中斷風暴與調度延遲。然而長期佔用 CPU 核心會導致資源利用率下降,且繞過核心後應用程式必須自行處理防火牆與流量控制等原本由作業系統核心提供的功能。

其主流技術代表如下。

  • Data Plane Development Kit (DPDK):由開源社群提供的一套網路封包處理框架。
  • Remote Direct Memory Access (RDMA):遠端直接記憶體存取,允許網路卡直接讀寫遠端伺服器的記憶體。
  • eBPF / eXpress Data Path (XDP):在作業系統核心的早期階段,也就是網路驅動層,進行可程式化的快速封包處理。

2. 高頻交易網路優化

在高頻交易領域,網路延遲通常以奈秒或微秒為單位進行競爭。為了在交易所發布行情或匹配訂單時搶佔先機,HFT 架構會將傳統的 Linux 網路棧完全剝離,轉而採用更高規格的硬體與軟體優化技術。

以下是高頻交易中核心的網路優化策略與技術架構。

  • 硬體與物理層優化 —— Microwave 空中微波 / 光纖直連:縮短物理傳輸距離,超越傳統光纖的光速限制。當交易訊號需要跨越不同城市,即使有物理距離限制,傳輸時間依然能落在毫秒級。
  • 網路卡 (NIC) 層優化 —— 乙太網路轉 FPGA / ASIC 晶片:在硬體電路層面直接 parse 行情封包。延遲量級大約 200 奈秒。
  • 軟體與作業系統核心優化 —— Kernel Bypass:繞過作業系統核心,資料直接從網路卡透過 DMA 進入交易程式的記憶體空間。延遲量級不超過 2 微秒。
  • 系統微調與調校 —— CPU 核心隔離與綁定:消除作業系統硬體中斷與 thread 切換帶來的工作排程 jitter,可消除微秒級的隨機延遲。

3. 軟硬體架構實作要點

在 HFT 業界,已被 AMD 收購的 Solarflare 網卡是標準配備,其提供了兩種核心的 kernel bypass 軟體層技術。

  • OpenOnload:一種透明的加速機制。攔截標準的 recv()send() 等 POSIX Socket API,讓現有的 C/C++ 交易程式不需要修改程式碼就能享有 kernel bypass 帶來的低延遲。
  • Efficient Flexible Virtual Interface (EF_VI):這是更極致的底層 API。開發者必須重寫網路層程式碼,直接控制網卡的 hardware queues。其免除了 Onload 內部的額外封裝,能將軟體層面的延遲壓到最低。

硬體層同樣存在巨大的優化空間,最具代表性的技術便是「現場可程式化邏輯門陣列」。當軟體優化到小於 1 微秒的極致後,下一個瓶頸就是 CPU 與 PCI-E 總線。為此,HFT 團隊會將核心交易邏輯直接燒錄在網卡上的 FPGA 晶片中。

  • Tick-to-Trade 硬體化:網卡收到交易所的 UDP multicast 行情封包後,FPGA 在晶片內直接完成 decode、策略觸發、FIX/OUCH 協議的下單封裝,並直接發送出去。整個過程完全不經過 CPU,成功將延遲控制在 100-300 奈秒內。

4. OS Tuning —— Linux 作業系統極致調校

為了確保交易程式在執行時不會受到系統干擾,Linux 系統會進行以下設定。

  • isolcpus 隔離 CPU 核心:在 Linux 啟動參數中將特定的 CPU 核心隔離,不讓作業系統將一般進程分配到這些核心。
  • pthread_setaffinity_np 綁定線程:將交易的核心策略執行緒與專門處理網卡 polling 的執行緒固定在被隔離的 CPU 核心上。
  • 關閉 CPU 節能模式:將 C-States 和 P-States 全數關閉,將調度器設為 performance,防止 CPU 因為降頻或進入省電狀態而產生喚醒延遲。
  • NAPI Polling 禁用中斷:完全關閉網卡的硬體中斷,由交易程式用一個 while(true) 迴圈不斷去讀取 busy polling 網卡緩衝區,雖然 CPU 會 100% 滿載,但換來的是零中斷延遲。

5. 高頻交易網路的隱形殺手 —— 排隊延遲與微突發

HFT 除了追求 average latency ,更看重 tail latency。交易所可能在幾微秒內湧入數萬筆行情更新,導致 switch 或網卡的 buffer 瞬間溢滿,也就是所謂的 micro-burst 微突發。

為了防範其帶來的長尾延遲,HFT 網路架構會採用超低延遲交換器:例如業界常見的 Arista 7150 系列;或是更進一步採用基於 FPGA 技術、具備奈秒級 Layer 1 轉發能力的 Arista 7130 系列。這類交換機能在幾個奈秒內完成複製與分發,並具備精準的硬體時間戳記以精確分析封包在微秒級間的排隊狀況。


上一篇
[Day 21] 進度存檔 | Low-Latency 中繼城冒險日誌
下一篇
[Day 23] HFT Networking Infrastructure: Kernel Bypass II
系列文
從 C++ 菜鳥到 Low-Latency 勇者:一場分秒必爭的賽局24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言